package com.losalpes.persistence.entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

/**
 *
 * @author Camilo Alvarez duran
 */
@Entity
@NamedQueries({@NamedQuery(name="Mueble.findAll", query="select o from Mueble o"),
@NamedQuery(name="Mueble.findByType", query="select o from Mueble o where o.tipo = :tipo")})
public class Mueble implements Serializable{

    @Id
    private String referencia;
    private String nombre;
    private String descripcion;
    private TipoMueble tipo;
    private String material;
    private double alto;
    private double ancho;
    private double profundidad;
    private String dimensiones;
    private String color;
    private double peso;
    private String foto;
    private double precio;
    private double cantidad;

    public Mueble() {
    }

    /**
     * Constructor de Mueble
     * @param referencia
     * @param nombre
     * @param descripcion
     * @param tipo
     */
    public Mueble(String referencia, String nombre, String descripcion, TipoMueble tipo) {
        this.referencia = referencia;
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.tipo = tipo;
    }

    /**
     * Constructor de Mueble
     * @param referencia
     * @param nombre
     * @param descripcion
     * @param tipo
     * @param material
     * @param alto
     * @param ancho
     * @param profundidad
     * @param color
     * @param peso
     */
    public Mueble(String referencia, String nombre, String descripcion, TipoMueble tipo, String material,
                  double alto, double ancho, double profundidad, String color, double peso) {
        this.referencia = referencia;
        this.nombre = nombre;
        this.descripcion = descripcion;
        this.tipo = tipo;
        this.material = material;
        this.alto = alto;
        this.ancho = ancho;
        this.profundidad = profundidad;
        this.dimensiones = "Alto: " + String.valueOf(alto) +
                                 "cm, Ancho: " + String.valueOf(ancho) +
                                 "cm, Profundidad: " + String.valueOf(profundidad) +
                                 "cm";
        this.color = color;
        this.peso = peso;
    }

    /**
     * Retorna el alto del mueble
     * @return alto
     */
    public double getAlto() {
        return alto;
    }

    /**
     * Modifica el alto del mueble
     * @param alto
     */
    public void setAlto(double alto) {
        this.alto = alto;
    }

    /**
     * Retorna el ancho del mueble
     * @return ancho
     */
    public double getAncho() {
        return ancho;
    }

    /**
     * Modifica el ancho del mueble
     * @param ancho
     */
    public void setAncho(double ancho) {
        this.ancho = ancho;
    }

    /**
     * Retorna el color del mueble
     * @return color
     */
    public String getColor() {
        return color;
    }

    /**
     * Modifica el color del mueble
     * @param color
     */
    public void setColor(String color) {
        this.color = color;
    }

    /**
     * Retorna la descripción del mueble
     * @return descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * Modifica la descripción del mueble
     * @param descripcion
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }


    /**
     * Retorna el matrial del mueble
     * @return material
     */
    public String getMaterial() {
        return material;
    }

    /**
     * Modifica el material del mueble
     * @param material
     */
    public void setMaterial(String material) {
        this.material = material;
    }

    /**
     * Retorna el nombre del mueble
     * @return nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * Modifica el nombre del mueble
     * @param nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Retorna el peso del mueble
     * @return peso
     */
    public double getPeso() {
        return peso;
    }

    /**
     * Modifica el peso del mueble
     * @param peso
     */
    public void setPeso(double peso) {
        this.peso = peso;
    }

    /**
     * Retorna la profundidad del mueble
     * @return profundidad
     */
    public double getProfundidad() {
        return profundidad;
    }

    /**
     * Modifica la profundidad del mueble
     * @param profundidad
     */
    public void setProfundidad(double profundidad) {
        this.profundidad = profundidad;
    }

    /**
     * Retorna la referencia del mueble
     * @return referencia
     */
    public String getReferencia() {
        return referencia;
    }

    /**
     * Modifica la referencia del mueble
     * @param referencia
     */
    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }

    /**
     * Retorna el tipo del mueble
     * @return tipo
     */
    public TipoMueble getTipo() {
        return tipo;
    }

    /**
     * Modifica el tipo del mueble
     * @param tipo
     */
    public void setTipo(TipoMueble tipo) {
        this.tipo = tipo;
    }

    /**
     * Retorna la foto del mueble
     * @return ruta de la foto
     */
    public String getFoto() {
        return foto;
    }

    /**
     * Modifica la foto del mueble
     * @param foto Ruta de la foto
     */
    public void setFoto(String foto) {
        this.foto = foto;
    }

    /**
     * Retorna el precio del mueble
     * @return precio
     */
    public double getPrecio() {
        return precio;
    }

    /**
     * Modifica el precio del mueble
     * @param precio
     */
    public void setPrecio(double precio) {
        this.precio = precio;
    }

    /**
     * Retorna las dimensiones del mueble
     * @return dimensiones
     */
    public String getDimensiones() {
        return dimensiones;
    }

    /**
     * Modifica las dimensiones del mueble
     * @param dimensiones
     */
    public void setDimensiones(String dimensiones) {
        this.dimensiones = dimensiones;
    }

    /**
     * Retorna la cantidad de muebles en inventario
     * @return cantidad
     */
    public double getCantidad() {
        return cantidad;
    }

    /**
     * Modifica la cantidad de muebles en inventario
     * @param cantidad
     */
    public void setCantidad(double cantidad) {
        this.cantidad = cantidad;
    }

    @Override
    public String toString() {
        return this.nombre;
    }

    
}
